Simple Fast Withdrawals
m0t0k1ch1.icon exit 中の資金の受領権を NFT 化して売却することで exit を高速化するアイデア
---.icon
TL;DR
We can enable fast withdrawals without Plasma contracts by taking advantage of root chain smart contracts. Withdrawals can then be handled as tokenized debt, and we can build a marketplace from there.
root チェーンのスマートコントラクトを利用することで、Plasma コントラクトなしで高速な引き出しが可能となる。引き出しはトークン化された債務として取り扱われ、その市場を構築することができる。
---.icon
Background
Fast withdrawals are a construction in Plasma that effectively boil down to an atomic swap between the Plasma chain and the root chain. They’re useful because Plasma withdrawals are slow (2 weeks, in our implementation), and people usually want their money quite quickly. The Plasma paper discusses one such construction that relies on outputs being locked to contracts:
要約すると、高速な引き出しとは、Plasma チェーンと root チェーンの間のアトミックスワップである。引き出しには時間がかかる(我々の実装だと 2 週間)し、人々は自身の資金を素早く引き出したいので、これは有用である。Plasma ペーパーでは、コントラクトにロックされた出力に依存した以下のような仕組みについて言及されている。
Funds are locked to a contract on a particular output in the Plasma chain. This occurs in a manner similar to a normal transfer, in that both parties broadcast a transaction, and then later commit that they have seen the transaction in a Plasma block. The terms of this contract is that if a contract is broadcast on the root blockchain and has been finalized, then the payment will go through in the Plasma chain.
資金は Plasma チェーン上の特定の出力に関するコントラクトにロックされる。これは通常の送金と同様に発生する。双方のグループがトランザクションをブロードキャストし、後に Plasma ブロックの中にそのトランザクションの存在を確認したことを表明する。このコントラクトに関する条件は、コントラクトが root チェーン上でブロードキャストされ、ファイナライズされた場合に、Plasma チェーンで支払いが行われることである。
However, we currently don’t support funds locked to contracts in Plasma. This post describes a simple fast withdrawal mechanism that ensures the liquidity provider will be paid after the full withdrawal time without the need of Plasma contracts. Like the original fast withdrawal design, this design relies on Plasma data availability.
しかし、現在、Plasma においてコントラクトへの資金ロックはサポートされていない。この投稿では、シンプルで高速な引き出しの仕組みについて説明する。この仕組みによって、流動性プロバイダは引き出し期間の終了後に支払いを受ける。また、これに Plasma コントラクトは必要ない。オリジナルの高速引き出しの設計と同様、この設計もデータの availability に依存している。
---.icon
Pay-to-Smart-Contract
We take advantage of the fact that Ethereum smart contracts cannot produce signatures, and therefore cannot spend funds on the Plasma chain. However, Ethereum contracts can initiate an exit by calling the Plasma contract. This makes it possible for a user to send child chain funds to the address of an Ethereum contract, where these funds can no longer be spent but can be withdrawn.
Ethereum のスマートコントラクトは署名を生成できないため、Plasma チェーンの資金を使用することができないという事実を利用する。しかし、Ethereum のコントラクトは、Plasma コントラクトをコールすることで exit を開始することはできる。これにより、ユーザーは子チェーンの資金を Ethereum のコントラクトのアドレスに送ることで、その資金を「使用不可能だが引き出し可能」という状態にできる。
In the case that a user doesn’t want to wait for the Plasma exit, we can enable fast withdrawals by deploying a special contract to Ethereum - let’s call this a “liquidity contract”. Any user may force the contract to trigger a slow Plasma exit of any utxo where the user is the sender. This action creates an ERC721 token for the user that represents the right to receive the value of the exit once it processes. The user can then quickly and simply receive value of their utxo (minus a fee in the form of a discount) by transferring or selling this token to any other user.
exit を待ちたくないユーザーは、特別なコントラクトを Ethereum にデプロイすることで高速引き出しが可能である。この特別なコントラクトを「liquidity コントラクト」と呼ぼう。ユーザーは誰でも、そのコントラクトを通じて、自身が送信者である UTXO の exit を開始することができる。この行為によって、exit を受け取る権利を表す ERC721 トークンが生成され、ユーザーに付与される。このトークンを他のユーザーに譲渡もしくは売却することで、ユーザーは素早くかつシンプルにその UTXO の価値(手数料を差し引いた分)を受け取ることができる。
m0t0k1ch1.icon 端的に言うと、exit 中の資金の受領権を NFT 化して(exit 中の資金よりも少し安く)売却するということ
m0t0k1ch1.icon 売った側は、実質、課金(手数料)によって exit を時短できたことになる
m0t0k1ch1.icon 買った側は、exit を待つ代わりに、手数料の分だけ儲けたことになる
m0t0k1ch1.icon 賢い
For clarity, here’s a quick user flow:
わかりやすく説明すると、以下のようなフローである。
1. Alice has 10 ETH on the child chain and wishes to quickly withdraw to the Plasma chain instead of waiting two weeks.
2. Bob is okay waiting two weeks for the exit to process, so he’s willing to front Alice the money now in exchange for a discount.
3. Alice and Bob will use an Ethereum liquidity contract.
4. Alice sends her 10 (child chain) ETH to the address of the liquidity contract. This a Plasma transaction, not an Ethereum transaction.
5. Alice sees that her transaction to the contract has been included in the Plasma chain. The contract now owns a utxo received from Alice.
6. Alice calls a function in the smart contract that triggers an exit from this utxo. The contract credits Alice with a token representing the future funds from this exit.
7. Bob is willing to pay 9 ETH for a 10 ETH token that will “mature” (to take some bond terminology) in two weeks.
8. Bob has data availability, checks the Plasma chain, and sees that Alice’s exit is not invalid. Bob tells Alice that he’s willing to purchase her exit token.
9. Alice sells her 10 ETH token to Bob for 9 ETH. Alice receives 9 ETH now, and Bob will receive 10 ETH once the exit processes. Bob has “earned” 1 ETH (in the form of a discount) for providing a liquidity service to Alice.
1. Alice は子チェーンで 10 ETH を保有しており、2 週間待たずにこれを素早く引き出したい
2. Bob は exit が処理されるのを 2 週間待ち、exit される資金からいくらか割引きした分を Alice に前払いしたいと思っている
3. Alice と Bob は Ethereum 上の liquidity コントラクトを使用する
4. Alice は(子チェーンで保有している)自身の 10 ETH を liquidity コントラクトのアドレスに送る
これは Plasma トランザクションであり、Ethereum トランザクションではない
5. Alice はそのトランザクションが Plasma チェーンに含まれたことを確認する
コントラクトは、Alice から受け取った UTXO を保有していることになる
6. Alice がこの UTXO の exit を開始するスマートコントラクトの関数をコールすると、コントラクトは Alice に対してこの exit に由来する未来の資金を表すトークンを付与する
7. Bob は 2 週間で「満期となる」10 ETH トークンに対して 9 ETH を支払いたい
8. Bob はデータ availability を有しており、Plasma チェーンをチェックして Alice の exit が不正でないことを確認する
Bob は Alice に exit トークンを購入したいと伝える
9. Alice は 10 ETH トークンを 9 ETH で Bob に売ることで 9 ETH を受け取り、exit が処理されたら Bob は 10 ETH を受け取る
Bob は Alice に対して liquidity サービスを提供したことで、(割引きというカタチで)1 ETH「稼いだ」ことになる
---.icon
Markets
To ensure that Alice is able to receive funds from the Plasma chain quickly, there must be a marketplace for her tokens. It’s possible to create any number of schemes that give users the best possible price. For example, each user could hold a short auction for their token or could arrange a sale out-of-band.
Alice が素早く資金を受け取れることを保証するためには、トークンの市場が必須である。ユーザーに最適な価格を提案するスキームはいくらでもつくることができる。例えば、各ユーザーは短期間のオークションを開催したり、ネットワーク外で販売を手配したりすることができる。
It’s also possible to reintroduce the concept of rating agencies to create more liquid markets. These agencies would attest to the validity of the exit. Liquidity providers could then give a market price for each token (based on value & time to process). This means that users can quickly sell their tokens and receive their funds without having to spend time finding a liquidity provider or waiting for an auction to complete.
より流動性の高い市場を構築するため、格付け機関の概念を再導入することも可能である。これらの機関が exit の正当性を証明することで、流動性プロバイダは(価値と処理時間に基づいた)各トークンの市場価格を提案することができる。つまり、ユーザーは、流動性プロバイダを見つけるために時間を消費することなく、また、オークションの完了を待つことなく、自身のトークンを素早く売却して資金を受け取ることができる。
Furthermore, it’s probably also possible to sell parts of a token, but gas costs make this more infeasible for low-value tokens.
さらに、トークンを部分的に売却することもおそらく可能である。が、gas コストがあるため、低価値なトークンに関しては実行困難である。
An auction seems like the simplest mechanism in the short-term.
短期的に見ると、オークションが最もシンプルなメカニズムのように思う。
---.icon
発展的な議論
exit トークンの最適な買い手
I’ve had similar ideas; the conclusion I had is that the optimal buyer for coins in exit slots will generally be the plasma chain operator itself. So this becomes isomorphic to saying that the plasma chain can, in the normal case, have instant withdrawals, provided the contract is up to 2x over-collateralized (and much less over-collateral will be needed if the frequency of withdrawal requests is somewhat predictable).
vbuterin:自分も同じようなアイデアを持っていた。自分の結論は、exit スロットにあるコインの最適な買い手は Plasma チェーンのオペレータ自身であるということ。これは、通常、コントラクトに 2 倍以下の担保を入れることで即時引き出し可能になるということと同じである(引き出しリクエストの頻度がある程度予測可能な場合、必要な超過担保はより少なくなる)。
m0t0k1ch1.icon 確かに、誰かが過剰に担保(最大でデポジットと同額)を入れておけば、その超過分を使ってすぐに exit トークンを買収できるし、オペレータがそれをやるのは合理的
Is this generally because the operator won’t include a double spend if they’re the one who’d lose out by including it?
kfichter:その理由は、大まかに言うと、double spend を含めることで資金を失う場合、オペレータは double spend を含めないから?
Because the operator is both (i) the best party to internalize gains from increasing usability of the plasma chain, and (ii) the party that most easily and quickly knows that some exit-in-progress is valid and not challengeable.
vbuterin:理由は 2 つ。1 つ目は、Plasma チェーンのユーザビリティ向上に起因する利益を最も享受できるのはオペレータだから。2 つ目は、処理中の exit が正当であり challenge 不可能であることを最も簡単かつ素早く知れるのはオペレータだから。